开发者指导 ================= ## EdgeGallery业务开发指导 - [APPStore](../Projects/APPSTORE/AppStore_Contribution.md) - [Developer](../Projects/Developer/Developer_Contribution.md) - MECM - [APM](../Projects/MECM/MECM_Apm_Contribution.md) - [APPO](../Projects/MECM/MECM_Appo_Contribution.md) - [Inventory](../Projects/MECM/MECM_Inventory_Contribution.md) - [APPLCM](../Projects/MECM/MECM_LCM_controller_Contribution.md) - [MEP](../Projects/MEP/MEP_Contribution.md) - [User Management](../Projects/User%20Management/User_Contribution.md) - [ATP](../Projects/ATP/ATP_Contribution.md) ## 北向接口调用指导 EdgeGallery支持第三方业务系统通过北向接口网关调用EdgeGallery的业务接口。调用流程如下图所示: ![北向接口调用流程](../uploads/images/2021/common/northapi-arch.png) ### 北向接口调用endpoint 目前由WebsiteGateway来承担北向接口网关的职责,具体是由通过WebsiteGateway运行起来的各业务平台前端来承担。 所以北向接口调用的endpoint可以使用任意一个业务平台前端的endpoint。如下: |平台|endpoint|说明| |-------|----------|-------| |EdgeGallery融合前端|https://{PORTAL_IP}:30095|推荐使用该endpoint| |AppStore平台前端|https://{PORTAL_IP}:30091|--| |Developer平台前端|https://{PORTAL_IP}:30092|--| |Mecm平台前端|https://{PORTAL_IP}:30093|--| |Atp平台前端|https://{PORTAL_IP}:30094|--| ### 获取XSRF-TOKEN 在调用获取AccessToken的接口和各平台的业务接口之前,需要先获取到XSRF-TOKEN。 ``` Resource URI: / Method: GET ``` Example request: ``` GET https://x.x.x.x:30095/ ``` Example response: ``` response 200 OK 响应的Cookie中即包含XSRF-TOKEN,请获取它。 后续所有的接口调用中都需要通过请求头X-XSRF-TOKEN传递。 ``` ### 获取AccessToken ``` Resource URI: /mec-usermgmt/v1/accesstoken Method: POST ``` |Name|Definition|Type|Required|Describe| |-------|----------|-------|---------|---------| |X-XSRF-TOKEN|XSRF-TOKEN|header|是|| |userFlag|登录凭证(用户名/邮箱/手机号)|body|是|| |password|密码|body|是|| Example request: ``` https://x.x.x.x:30095/mec-usermgmt/v1/accesstoken -H "X-XSRF-TOKEN: xxxx" { "userFlag": "", "password": "" } ``` Example response: ``` response 200 OK { "userId": "xxxxx", "accessToken": "eyJhbGciOiJSUzI1NiIsInR5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" } 后续所有的业务接口调用都需要通过请求头X-ACCESS-TOKEN传递这里的accessToken值。 response 400 Bad Request { "code": 70xxx, "message": "" } response 401 Unauthorized { "code": 70xxx, "message": "" } ``` ### 调用业务接口 各平台提供的业务接口,参考各模块的接口文档。 #### 北向业务接口URL格式 通过北向接口调用各平台的业务接口时,URL按照如下格式调用: ``` https://x.x.x.x:30095/{urlPrefix}/{业务接口自身的URL} ``` 其中urlPrefix是各平台在网关中定义的路由前缀,定义如下表所示: |平台|urlPrefix| |-------|----------| |AppStore|mec-appstore| |Developer|mec-developer| |Mecm-Inventory|mecm-inventory| |Mecm-APP|mecm-appo| |Mecm-APM|mecm-apm| |ATP|mec-atp| #### 北向业务接口请求头 通过北向接口调用各平台的业务接口时,需要传递如下请求头: |Name|Definition| |-------|----------| |X-XSRF-TOKEN|XSRF-TOKEN| |X-ACCESS-TOKEN|ACCESS-TOKEN| #### 北向业务接口调用示例 AppStore平台提供了获取应用列表的接口: GET /mec/appstore/v1/apps 北向调用: ``` GET https://x.x.x.x:30095/mec-appstore/mec/appstore/v1/apps -H "X-XSRF-TOKEN: xxxx" -H "X-ACCESS-TOKEN: xxxx" ``` #### 第三方IAM对接开发指导 EdgeGallery支持对接使用第三方IAM帐号系统。 在部署EdgeGallery时请参考:[离线安装指导](https://gitee.com/edgegallery/installer/tree/master/ansible_install)中的说明开启第三方IAM使能开关。 对于第三方IAM帐号系统,需要实现如下接口: |接口名称|URL|Method|Request|Response|Response Status| |---------------|------------------------------------------------------------|------|------------------------------------------------------------|------------------------------------------------------------|------------------------------------------------------------| |登录|/iam/users/login|POST|{
"userFlag": "xxxx",//用户登录凭证(用户名/邮箱地址)
"password": "xxx"//登录密码
}|{
"userId": "", //用户ID
"userName": "", //用户名
"mailAddress": "", //邮箱地址(可选)
"userRole": "", //用户角色(ADMIN:管理员 TENANT:租户)
}|200:登录成功,返回用户信息
401:认证失败|